---
id: 5900f46d1000cf542c50ff7f
title: 'Завдання 255: округлені квадратні корені'
challengeType: 1
forumTopicId: 301903
dashedName: problem-255-rounded-square-roots
---

# --description--

Визначимо округлений квадратний корінь натурального числа $n$ як квадратний корінь числа $n$, округлений до найближчого цілого числа.

За допомогою наступної дії (по суті це метод Герона, адаптований до цілочислової арифметики) знаходимо округлений квадратний корінь числа $n$:

Нехай $d$ буде кількістю цифр числа $n$.

Якщо $d$ є непарним числом, то $x_0 = 2 × {10}^{\frac{d - 1}{2}}$.

Якщо $d$ є парним числом, то $x_0 = 7 × {10}^{\frac{d - 2}{2}}$.

Повторюємо

$$x_{k + 1} = \left\lfloor\frac{x_k + \left\lceil\frac{n}{x_k}\right\rceil}{2}\right\rfloor$$

доки $x_{k + 1} = x_k$.

Як приклад знайдемо округлений квадратний корінь за умови $n = 4321$.

$n$ складається з 4 цифр, тож $x_0 = 7 × {10}^{\frac{4-2}{2}} = 70$.

$$x_1 = \left\lfloor\frac{70 + \left\lceil\frac{4321}{70}\right\rceil}{2}\right\rfloor = 66 \\\\
x_2 = \left\lfloor\frac{66 + \left\lceil\frac{4321}{66}\right\rceil}{2}\right\rfloor = 66$$

Оскільки $x_2 = x_1$, тут зупиняємося. Таким чином, після всього двох ітерацій, ми виявили, що округлений квадратний корінь числа 4321 дорівнює 66 (точне значення квадратного кореня становить 65.7343137…).

Кількість ітерацій, необхідних для використання цього методу, на диво низька. Наприклад, ми можемо знайти округлений квадратний корінь п’ятизначного цілого числа ($10\\,000 ≤ n ≤ 99\\,999$) в середньому за 3.2102888889 ітерацій (середнє значення округлено до 10 знаків після коми).

Використовуючи описаний вище метод, якою є середня кількість ітерацій, необхідних для знаходження округленого квадратного кореня 14-значного числа (${10}^{13} ≤ n &lt; {10}^{14}$)? Дайте відповідь, заокруглену до десяти знаків після коми.

**Примітка:** символи $⌊x⌋$ та $⌈x⌉$ позначають функцію підлоги та стелі відповідно.

# --hints--

`roundedSquareRoots()` має повернути `4.447401118`.

```js
assert.strictEqual(roundedSquareRoots(), 4.447401118);
```

# --seed--

## --seed-contents--

```js
function roundedSquareRoots() {

  return true;
}

roundedSquareRoots();
```

# --solutions--

```js
// solution required
```
